(function() {
	var hbUtil = function() {
		// 身份证验证
		this.checkIdentiyNumber = function(idcard1, errNoteId) {
			var idcard = idcard1;
			var Errors = new Array("验证通过!", "身份证号码位数不对!",
					"身份证号码出生日期超出范围或含有非法字符!", "身份证号码校验错误!", "身份证地区非法!");
			var area = {
				11 : "北京",
				12 : "天津",
				13 : "河北",
				14 : "山西",
				15 : "内蒙古",
				21 : "辽宁",
				22 : "吉林",
				23 : "黑龙江",
				31 : "上海",
				32 : "江苏",
				33 : "浙江",
				34 : "安徽",
				35 : "福建",
				36 : "江西",
				37 : "山东",
				41 : "河南",
				42 : "湖北",
				43 : "湖南",
				44 : "广东",
				45 : "广西",
				46 : "海南",
				50 : "重庆",
				51 : "四川",
				52 : "贵州",
				53 : "云南",
				54 : "西藏",
				61 : "陕西",
				62 : "甘肃",
				63 : "青海",
				64 : "宁夏",
				65 : "新疆",
				71 : "台湾",
				81 : "香港",
				82 : "澳门",
				91 : "国外"
			}

			var idcard, Y, JYM;
			var S, M;
			var idcard_array = new Array();
			idcard_array = idcard.split("");
			/* 地区检验 */
			if (area[parseInt(idcard.substr(0, 2))] == null) {
				$('#' + errNoteId).html(Errors[4]);
				return false;
			}
			/* 身份号码位数及格式检验 */
			var ereg;
			switch (idcard.length) {
				case 15 :
					if ((parseInt(idcard.substr(6, 2)) + 1900) % 4 == 0
							|| ((parseInt(idcard.substr(6, 2)) + 1900) % 100 == 0 && (parseInt(idcard
									.substr(6, 2)) + 1900)
									% 4 == 0)) {
						ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;// 测试出生日期的合法性
					} else {
						ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;// 测试出生日期的合法性
					}
					if (ereg.test(idcard)) {
						// alert(Errors[0]+"15");
						return true; // 15位验证通过
					} else {
						$('#' + errNoteId).html(Errors[2]);
						return false;
					}
					break;

				case 18 :
					// 18位身份号码检测
					// 出生日期的合法性检查
					// 闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))
					// 平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))
					if (parseInt(idcard.substr(6, 4)) % 4 == 0
							|| (parseInt(idcard.substr(6, 4)) % 100 == 0 && parseInt(idcard
									.substr(6, 4))
									% 4 == 0)) {
						ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;// 闰年出生日期的合法性正则表达式
					} else {
						ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;// 平年出生日期的合法性正则表达式
					}
					if (ereg.test(idcard)) {// 测试出生日期的合法性
						// 计算校验位
						S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10]))
								* 7
								+ (parseInt(idcard_array[1]) + parseInt(idcard_array[11]))
								* 9
								+ (parseInt(idcard_array[2]) + parseInt(idcard_array[12]))
								* 10
								+ (parseInt(idcard_array[3]) + parseInt(idcard_array[13]))
								* 5
								+ (parseInt(idcard_array[4]) + parseInt(idcard_array[14]))
								* 8
								+ (parseInt(idcard_array[5]) + parseInt(idcard_array[15]))
								* 4
								+ (parseInt(idcard_array[6]) + parseInt(idcard_array[16]))
								* 2
								+ parseInt(idcard_array[7])
								* 1
								+ parseInt(idcard_array[8])
								* 6
								+ parseInt(idcard_array[9]) * 3;
						Y = S % 11;
						M = "F";
						JYM = "10X98765432";
						M = JYM.substr(Y, 1);/* 判断校验位 */
						if (M == idcard_array[17]) {
							// alert(Errors[0]+"18");
							return true; /* 检测ID的校验位false; */
						} else {
							$('#' + errNoteId).html(Errors[3]);
							return false;
						}
					} else {
						$('#' + errNoteId).html(Errors[2]);
						return false;
					}
					break;

				default :
					$('#' + errNoteId).html(Errors[1]);
					return false;
			}
		};

		this.convertCurrency = function(numberValue) {

			var numberValue = new String(Math.round(numberValue * 100)); // 数字金额
			var chineseValue = ""; // 转换后的汉字金额
			var String1 = "零壹贰叁肆伍陆柒捌玖"; // 汉字数字
			var String2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"; // 对应单位
			var len = numberValue.length; // numberValue 的字符串长度
			var Ch1; // 数字的汉语读法
			var Ch2; // 数字位的汉字读法
			var nZero = 0; // 用来计算连续的零值的个数
			var String3; // 指定位置的数值
			var curNumber;
			if (len > 15) {
				alert("超出计算范围");
				return "";
			}
			if (numberValue == 0) {

				chineseValue = "零元整";
				return chineseValue;

			}

			String2 = String2.substr(String2.length - len, len); // 取出对应位数的STRING2的值
			// alert(len);

			for (var i = 0; i < len; i++) {
				curNumber = numberValue.substr(i, 1);
				// alert(curNumber);
				if (i == 0 && curNumber == '-') { // 如果转换的是负数
					chineseValue = chineseValue + "负";
					continue;
				}
				String3 = parseInt(numberValue.substr(i, 1), 10); // 取出需转换的某一位的值
				// alert(String3);
				if (i != (len - 3) && i != (len - 7) && i != (len - 11)
						&& i != (len - 15)) {

					if (String3 == 0) {

						Ch1 = "";
						Ch2 = "";
						nZero = nZero + 1;

					} else if (String3 != 0 && nZero != 0) {

						Ch1 = "零" + String1.substr(String3, 1);
						Ch2 = String2.substr(i, 1);
						nZero = 0;

					} else {

						Ch1 = String1.substr(String3, 1);
						Ch2 = String2.substr(i, 1);
						nZero = 0;
					}
				} else { // 该位是万亿，亿，万，元位等关键位
					if (String3 != 0 && nZero != 0) {

						Ch1 = "零" + String1.substr(String3, 1);
						Ch2 = String2.substr(i, 1);
						nZero = 0;

					} else if (String3 != 0 && nZero == 0) {

						Ch1 = String1.substr(String3, 1);
						Ch2 = String2.substr(i, 1);
						nZero = 0;

					} else if (String3 == 0 && nZero >= 3) {

						Ch1 = "";
						Ch2 = "";
						nZero = nZero + 1;

					} else {

						Ch1 = "";
						Ch2 = String2.substr(i, 1);
						nZero = nZero + 1;

					}

					if (i == (len - 11) || i == (len - 3)) { // 如果该位是亿位或元位，则必须写上
						Ch2 = String2.substr(i, 1);
					}

				}
				chineseValue = chineseValue + Ch1 + Ch2;

			}

			if (String3 == 0) { // 最后一位（分）为0时，加上“整”
				chineseValue = chineseValue + "整";
			}

			return chineseValue;
		}

		this.isIpValue = function(strSrc) {
			var strIpValue = "0123456789.";
			var len = strSrc.length;
			for (var i = 0; i < len; i++) {
				if (strIpValue.indexOf(strSrc.charAt(i)) < 0) {
					return false;
				}
			}
			return true;
		}
		
		this.isEmpty = function isEmpty(s) {
			return ((s == null) || (s.length == 0))
		}
	}
	window.hbUtil = hbUtil;
})();